import axios from "axios";
import qs from "qs";
// 创建一个实例axios实例
const instance = axios.create();
import baseURL from "./baseURL";
const BMD = baseURL.BMD;
// 这里不算是vue3中的结构,可以直接用引入的方式引用store
import store from '@/store'
// 添加请求拦截器, 放在实例上面
instance.interceptors.request.use(config => {
  // 在发送请求之前做些什么
  config.headers['token'] = store.state.token
  return config;
});
// 添加响应拦截器 如果状态码是401 清空本地存储重新跳转登陆页面login
import router from '@/router'
instance.interceptors.response.use(
  response => {
    // 在这里对后端返回的数据进行自定义处理
    // console.log(response)
    if (response.data.code == 401) {
      localStorage.clear()
      router.push('/login')
    }
    return response
  },
  error => {
    // 超出 2xx 范围的状态码都会触发该函数。
    console.log('响应拦截器error', error)
    // 对响应错误做点什么
    return Promise.reject(error);
  }
)

// 引入基本路径
export const myaxios = {
  /**
   * get传参
   * @param {string} url
   * @param {object} params {属性：值}
   */
  get(url, params) {
    return instance({
      url: BMD + url,
      method: "get",
      params,
    });
  },

  /**
   * delete传参
   * @param {string} url
   * @param {object} params {属性：值}
   */
  delete(url, params) {
    console.log("delete接口");
    return instance({
      url: BMD + url,
      method: "delete", // 请求方式必须改为delete,虽然用法和get一样
      params,
    });
  },

  /**
   * post 请求方式
   * @param {string} url
   * @param {object} params {属性：值}
   */
  post(url, params) {
    return instance({
      url: BMD + url,
      method: "post",
      data: qs.stringify(params),
    });
  },

  /**
   * put传参
   * @param {string} url
   * @param {object} params {属性：值}
   */
  put(url, params) {
    return instance({
      url: BMD + url,
      method: "put",
      data: qs.stringify(params),
    });
  },
};
// 文件上传
export const upload = {
  // fd 是资源文件 FormData对象
  post(fd) {
    return axios.post("http://47.93.39.127:3040/upload", fd);
  },
};
